<?php
// class Preferences
// {
//     private $props = array();
//     private function __construct()
//     {
//     }
//     private function setPropety($key, $val)
//     {
//         $this->props[$key] = $val;//万一有重复的呢？ 这样不就丢失数据了吗？
//     }
//     public function getProperty($key)
//     {
//         return $this->props[$key];
//     }
// }
// ？书上所说的  客户端代码不能实例对象 是什么意思
class Preferences
{
    private $props = array();
    private static $instance;
    private function __construct()
    {
    }
    public static function getInstance()
    {
        if (empty(self::$instance)) {
            self::$instance = new Preferences();//如果 self of property  是空
        }
        return self::$instance;
    }
    public function setPropety($key, $val)
    {
        $this->props[$key] = $val;//万一有重复的呢？ 这样不就丢失数据了吗？
    }
    public function getProperty($key)
    {
        return $this->props[$key];
    }
}
$pref = Preferences::getInstance();
$pref->setPropety("name", "alex");
unset($pref);
$pref2 = Preferences::getInstance();
print $pref2->getProperty("name") . "<br>";
var_dump(Preferences::getInstance());
//
?>